package com.carlinfo.userscenter.users.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.carlinfo.common.util.PageInfoUtil;
import com.carlinfo.userscenter.users.pojo.AMenu;
import com.carlinfo.userscenter.users.pojo.ARoleMenu;

/**
 * 权限Service
 * 包含菜单表,菜单菜单关系表
 * @author wangshMac
 */
public interface IAuthService
{
	/*---- 菜单表操作开始 ----*/
	/**
	 * 保存一条菜单
	 * @param menu	菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//id:
				"id":"",
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject saveOneMenuService(AMenu menu);
	
	/**
	 * 更新一条菜单
	 * @param menu	菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject updateOneMenuService(AMenu menu);
	
	/**
	 * 删除一条菜单
	 * @param menu	菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject deleteOneMenuService(AMenu menu);
	
	/**
	 * 查询一条菜单
	 * @param condMap	键:名字标识,值:条件的值
	 * @return 查询结果一条菜单
	 */
	AMenu findOneMenuService(Map<String, Object> condMap);
	
	/**
	 * 查询多条菜单
	 * @param condMap	键:名字标识,值:条件的值
	 * @return 查询结果一条菜单
	 */
	List<AMenu> findCondListMenuService(PageInfoUtil pageInfoUtil ,Map<String, Object> condMap);
	
	/**
	 * 向下找树形结构
	 * @param menu 当前参数节点的所有子节点;如果为空,表示查询的是所有的整棵树
	 * @return
	 */
	List<AMenu> findChildTreeMenuService(AMenu menu);
	
	/**
	 * [
			{
				id : 1,
				pId : 0,
				name : "一级分类",
				open : true
			}
		]
	 */
	JSONArray findChildTreeMenuJSONService(String roleId);
	/*---- 菜单表操作结束 ----*/
	
	/*---- 角色菜单表操作开始 ----*/
	/**
	 * 保存一条角色菜单
	 * @param roleMenu	角色菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//id:
				"id":"",
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject saveOneRoleMenuService(ARoleMenu roleMenu);
	
	/**
	 * 更新一条角色菜单
	 * @param roleMenu	角色菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject updateOneRoleMenuService(ARoleMenu roleMenu);
	
	/**
	 * 删除一条角色菜单
	 * @param roleMenu	角色菜单对象
	 * @return	返回值是JSON
	 * {
			// 响应码/
			"code":"0",
			//响应码的描述 
			"info":"成功",
			"data":
			{
				//sql语句影响的条数
				"effect":""
			}
		}
	 */
	JSONObject deleteOneRoleMenuService(ARoleMenu roleMenu);
	
	/**
	 * 查询一条角色菜单
	 * @param condMap	键:名字标识,值:条件的值
	 * @return 查询结果一条角色菜单
	 */
	ARoleMenu findOneRoleMenuService(Map<String, Object> condMap);
	
	/**
	 * 查询多条角色菜单
	 * @param condMap	键:名字标识,值:条件的值
	 * @return 查询结果一条角色菜单
	 */
	List<ARoleMenu> findCondListRoleMenuService(PageInfoUtil pageInfoUtil ,Map<String, Object> condMap);
	/*---- 角色菜单表操作结束 ----*/
}
